name: ErrorInfo
type: ErrorInfo
description: |-
    Describes the cause of the error with structured details.

     Example of an error when contacting the "pubsub.googleapis.com" API when it
     is not enabled:

         { "reason": "API_DISABLED"
           "domain": "googleapis.com"
           "metadata": {
             "resource": "projects/123",
             "service": "pubsub.googleapis.com"
           }
         }

     This response indicates that the pubsub.googleapis.com API is not enabled.

     Example of an error that is returned when attempting to create a Spanner
     instance in a region that is out of stock:

         { "reason": "STOCKOUT"
           "domain": "spanner.googleapis.com",
           "metadata": {
             "availableRegions": "us-central1,us-east2"
           }
         }
__proto:
    package: google.rpc
    targetfile: error_details.proto
    imports:
        - google/protobuf/duration.proto
    options:
        go_package: google.golang.org/genproto/googleapis/rpc/errdetails;errdetails
        java_multiple_files: "true"
        java_outer_classname: ErrorDetailsProto
        java_package: com.google.rpc
        objc_class_prefix: RPC
fields:
    reason:
        type: string
        description: |-
            The reason of the error. This is a constant value that identifies the
             proximate cause of the error. Error reasons are unique within a particular
             domain of errors. This should be at most 63 characters and match
             /[A-Z0-9_]+/.
        __proto:
            number: 1
            oneof: ""
        __ui:
            component: ""
            flags: []
            noinit: false
            noskip: false
        meta:
            default: ""
            hint: ""
            label: label.ErrorInfo.reason
            options:
                flags: []
                list: []
            readonly: false
            repeated: false
            typespecific: null
        constraints: {}
    domain:
        type: string
        description: |-
            The logical grouping to which the "reason" belongs. The error domain
             is typically the registered service name of the tool or product that
             generates the error. Example: "pubsub.googleapis.com". If the error is
             generated by some common infrastructure, the error domain must be a
             globally unique value that identifies the infrastructure. For Google API
             infrastructure, the error domain is "googleapis.com".
        __proto:
            number: 2
            oneof: ""
        __ui:
            component: ""
            flags: []
            noinit: false
            noskip: false
        meta:
            default: ""
            hint: ""
            label: label.ErrorInfo.domain
            options:
                flags: []
                list: []
            readonly: false
            repeated: false
            typespecific: null
        constraints: {}
    metadata:
        type: map<string,string>
        description: |-
            Additional structured details about this error.

             Keys should match /[a-zA-Z0-9-_]/ and be limited to 64 characters in
             length. When identifying the current value of an exceeded limit, the units
             should be contained in the key, not the value.  For example, rather than
             {"instanceLimit": "100/request"}, should be returned as,
             {"instanceLimitPerRequest": "100"}, if the client exceeds the number of
             instances that can be created in a single (batch) request.
        __proto:
            number: 3
            oneof: ""
        __ui:
            component: ""
            flags: []
            noinit: false
            noskip: false
        meta:
            default: ""
            hint: ""
            label: label.ErrorInfo.metadata
            options:
                flags: []
                list: []
            readonly: false
            repeated: false
            typespecific: null
        constraints: {}
